package org.lanqiao.music.system.service;

import org.lanqiao.music.common.dto.MusicDTO;
import org.lanqiao.music.system.entity.Music;
import com.github.pagehelper.PageInfo;
import org.lanqiao.music.common.utils.PageDTO;
import org.lanqiao.music.system.vo.HotMusicVo;
import org.lanqiao.music.system.vo.MusicVO;

import java.util.List;


/**
 * (Music)表服务接口
 *
 * @author makejava
 * @since 2024-08-15 20:50:27
 */
public interface MusicService {

    /**
     * 通过ID查询单条数据
     *
     * @param musicId 主键
     * @return 实例对象
     */
    MusicVO queryById(Integer musicId);

    /**
     * 分页查询
     *
     * @param music 筛选条件
     * @return 查询结果
     */
    PageInfo<Music> queryByPage(Music music, PageDTO pageDTO);

    /**
     * 新增数据
     *
     * @param record 实例对象
     * @return 实例对象
     */
    int insert(Music record);

    /**
     * 批量新增音乐
     *
     * @param entities List<Music> 实例对象列表
     * @return 影响行数
     */
    int insertBatch(List<Music> entities);

    /**
     * 修改数据
     *
     * @param music 实例对象
     * @return 影响行数
     */
    int update(Music music);

    /**
     * 通过主键删除数据
     *
     * @param musicId 主键
     * @return 是否成功
     */
    int deleteById(Integer musicId);

    /**
     * 批量删除音乐
     *
     * @param musicIds List<Long> 歌曲ID列表
     * @return 影响行数
     */
    int deleteBatch(List<Long> musicIds);

    // 根据关键字搜索音乐信息
    PageInfo searchMusic(MusicDTO dto);

    //获取歌词
    String getLyricsByMusicId(Integer musicId);

    //获取歌曲url
    String getMusicFilePathByMusicId(Integer musicId);

    void hotMusicAdd(Integer musicId);

    List<HotMusicVo> getHotMusic();

}
